package com.kzw.dao;

import java.util.ArrayList;
import java.util.List;

import javax.management.Query;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;

import com.kzw.entity.Goods;

import my.db.Page;
import my.db.QueryHelper;

/**
 * 商品的增删改查
 * */
public class GoodsDao {

	// 增加
	public void save(Goods a) {
		String sql = "insert into goods values(null,?,?,?,?,?,?,?,?,?,?)";
		QueryHelper.update(sql, a.getTitle(), a.getAuthor(), a.getAuthorId(), 
				a.getInfo(), a.getStatus(), a.getImgPath(), a.getOpen(),
				a.getTop(), a.getCtime(), a.getPrice());
	}
	
	// 修改
	public void update(Goods a) {
		String sql = "update goods set title=?,author=?,authorId=?,info=?,status=?,imgPath=?,open=?,top=?,price=? where id=?";
		QueryHelper.update(sql, a.getTitle(), a.getAuthor(), a.getAuthorId(), 
				a.getInfo(), a.getStatus(), a.getImgPath(), a.getOpen(),
				a.getTop(), a.getPrice(), a.getId());
	}
	
	// 删除
	public void delete(Long id) {
		String sql = "delete from goods where id=?";
		QueryHelper.update(sql, id);
	}
	
	/**
	 * 根据ID查询
	 * */
	public Goods get(Long id) {
		String sql = "select * from goods where id=?";
		return QueryHelper.queryUnique(Goods.class, sql, id);
	}
	
	/**
	 * 分页查询
	 * */
	public Page<Goods> findPage(Page<Goods> page, String title) {
		List<Object> params = new ArrayList<>();
		String sql = "select * from goods";
		if(StringUtils.isNotBlank(title)) {
			sql += " where title like ?";
			params.add("%"+title+"%");
		}
		if(StringUtils.isNotBlank(page.getField())) {
			sql += String.format(" order by %s %s", page.getField(), page.getType());
		}
		
		List<Goods> data = QueryHelper.queryPage(Goods.class, sql, page.getPage(), page.getLimit(), params.toArray());
		page.setData(data);
		
		String sql2 = sql.replaceFirst("select .*? from", "select count(*) from");
		Long cnt = QueryHelper.stat(sql2, params.toArray());
		page.setCount(cnt);			
		
		return page;
	}
	
	
	/**
	 * 全体查询
	 * */
	public List<Goods> findAll() {
		String sql = "select * from goods";
		return QueryHelper.query(Goods.class,sql);
	}
}
